#pragma once

#include <stdlib.h>
#include <string>
#include <stdio.h>
#include <ctype.h>
#include <vector>

typedef std::vector<std::string> StringVec;
void Split(const std::string& str, StringVec& vec, char delimiter);

char const * const kpWildcardEventType = "*";
class HashedString
{
public:
	explicit HashedString(char const* const pIdentStr)
		: m_ident(hash_name(pIdentStr)),
		m_identStr(pIdentStr)
	{}

	unsigned long getHashValue( void ) const
	{
		return reinterpret_cast<unsigned long>( m_ident );
	}

	std::string getStr() const { return m_identStr; }

	static void* hash_name(char const* pIdentStr);

		
	bool operator< ( HashedString const & o ) const
	{
		bool r = ( getHashValue() < o.getHashValue() );
		return r;
	}

	bool operator== ( HashedString const & o ) const
	{
		bool r = ( getHashValue() == o.getHashValue() );
		return r;
	}

	private:
		void * m_ident;
		std::string m_identStr;
};
